
export default {

  // 全局唯一key
  namespace: 'example',
  // model的状态数据，通常表现为一个 javascript 对象（当然它可以是任何值）
  state: {},

  // 从 源 获取数据的方法
  // Subscription 语义是订阅，用于订阅一个数据源，
  // 然后根据条件 dispatch 需要的 action。
  // 数据源可以是当前的时间、服务器的 websocket 连接、keyboard 输入、geolocation 变化、history 路由变化等等
  subscriptions: {
    setup({ dispatch, history }) {  // eslint-disable-line
    },
  },
  // 异步操作
  effects: {
    *fetch({ payload }, { call, put }) {  // eslint-disable-line
      yield put({ type: 'save' });
    },
  },

  // 在 dva 中，reducers 聚合积累的结果是当前 model 的 state 对象
  // Reducer应该是个纯函数，即只要传入相同的参数，每次都应返回相同的结果。
  // 不要把和处理数据无关的代码放在Reducer里，让Reducer保持纯净，只是单纯地执行计算
  // Reducer接收两个参数：旧的state和Action，返回一个新的state
  reducers: {
    save(state, action) {
      return { ...state, ...action.payload };
    },
  },

};
